<!DOCTYPE html>  
<html>
    <meta charset="utf-8" />  
    <title>循环队列</title>  
<body>
    <h2>循环队列</h2>
    <p>
        为充分利用向量空间，克服"假溢出"现象的方法是：将向量空间想象为一个首尾相接的圆环，
        并称这种向量为循环向量。存储在其中的队列称为循环队列（Circular Queue）。
        这种循环队列可以以单链表、队列的方式来在实际编程应用中来实现。
    </p>
</body>
<script>  
    class LoopQueue {

        constructor(items) {
            this.items = items||[];
        }

        getIndex(index) {
            const length = this.items.length
            return index > length ? (index % length) : index
        }

        enqueue(element){
            this.items.push(element)
        }

        find(index) {
            return !this.isEmpty ? this.items[this.getIndex(index)] : null
        }

        get size(){
            return this.items.length
        }

        get isEmpty(){
            return !this.items.length
        }
        
    }

    const loopQueue = new LoopQueue(['Surmon'])
    loopQueue.enqueue('SkyRover')
    loopQueue.enqueue('Even')
    loopQueue.enqueue('Alice')
    console.log(loopQueue.size, loopQueue.isEmpty) // 4 false

    console.log(loopQueue.find(26)) // 'Even'
    console.log(loopQueue.find(87651)) // 'Alice'



</script>  
</html>